const gulp = require("gulp");
const fs = require("fs");
const zip = require("gulp-zip");
const bump = require("gulp-bump");
const semver = require("semver");
const path = require("path");
// 获取package.json参数
const getPackageJson = function () {
  return JSON.parse(fs.readFileSync("./package.json", "utf8"));
};
const pkg = getPackageJson();
// 打包方法
function _package(type = "patch") {
  const newVer = semver.inc(pkg.version, type);
  gulp
    .src("./package.json")
    .pipe(bump({ version: newVer }))
    .pipe(gulp.dest("./"));
  // 根据新的版本号打包文件
  return (
    gulp
      .src(["./dist/**", "!./dist/*.zip"])
      // .pipe(zip(pkg.name + "." + newVer + ".zip"))
      .pipe(zip(`${pkg.name}.zip`))
      .pipe(gulp.dest("./dist/"))
  );
  // .pipe(gulp.dest("release/" + new Date().getTime()));
}
const minimist = require("minimist");
const knownOptions = {
  string: "env",
  default: { env: process.env.VUE_APP_PWD || "production" }
};
const options = minimist(process.argv.slice(2), knownOptions);
const versionArr = options.env.split(".");
// 版本号
// 主版本号(major)：当你做了不兼容的 API 修改，
// 次版本号(minor)：当你做了向下兼容的功能性新增，可以理解为Feature版本，
// 修订号(patch)：当你做了向下兼容的问题修正，可以理解为Bug fix版本。
let versionStr = "patch";
console.log("versionArr", versionArr);
if (options.env.indexOf(".") > -1) {
  if (versionArr[0] != 0) {
    versionStr = "major";
  } else if (versionArr[1] != 0) {
    versionStr = "minor";
  } else if (versionArr[2] != 0) {
    versionStr = "patch";
  }
}
// 主版本号更新
// 当做了不兼容的API修改
gulp.task("zip", () => {
  console.log("options", options);
  return _package(versionStr);
});
// // 打包
// gulp.task("packageMajorVersion", () => {
//   return _package("major");
// });
// // 次版本号更新
// // 当做了向下兼容的功能性新增
// gulp.task("packageMinorVersion", () => {
//   return _package("minor");
// });
// // 修订号更新
// // 当你做了向下兼容的问题修正
// gulp.task("packagePatchVersion", () => {
//   return _package("patch");
// });
// // 先行版本号更新
// gulp.task("packagePrereleaseVersion", () => {
//   return _package("prerelease");
// });
// let account = JSON.parse(fs.readFileSync("./.env.account.json.local", "utf8"));
const account = {
  host: "ip",
  port: "22",
  username: "root",
  // eslint-disable-next-line quotes
  password: 'envLocal.split("=")[3]'
};
const config = {
  localFile: path.resolve(`./dist/${pkg.name}.zip`),
  serverDir: account.serverDir,
  romotePath: `${pkg.name}.zip`,
  account
};
